// 定义响应来源的数据类型，包括文本、文档ID、起始位置、结束位置和相似度
export type ResponseSources = {
  text: string;
  doc_id: string;
  start: number;
  end: number;
  similarity: number;
};

// 定义查询响应的数据类型，包括返回文本和来源数组
export type QueryResponse = {
  text: string;
  sources: ResponseSources[];
};

// 定义异步函数queryIndex，接收查询字符串参数，返回Promise<QueryResponse>
const queryIndex = async (query: string): Promise<QueryResponse> => {
  // 创建URL对象，指向本地查询接口
  const queryURL = new URL('http://localhost:5601/query?');
  // 将查询文本作为参数添加到URL中
  queryURL.searchParams.append('text', query);

  // 发送fetch请求，mode设置为'cors'以支持跨域
  const response = await fetch(queryURL, { mode: 'cors' });
  // 如果响应状态不是ok，返回错误信息和空来源数组
  if (!response.ok) {
    return { text: 'Error in query', sources: [] };
  }

  // 解析响应体为JSON，并断言为QueryResponse类型
  const queryResponse = (await response.json()) as QueryResponse;

  // 返回解析后的查询响应
  return queryResponse;
};

// 导出queryIndex函数作为默认导出
export default queryIndex;
